import axios from 'axios';

export interface GlobalConfigurationModel {
  id: number; // 主键Id
  baseUrl: string; // 基础地址
  requestIdKey: string | undefined; // 请求ID
  downstreamScheme: string | undefined; // 请求的方式（http,https）
  downstreamHttpVersion: string | undefined; // Http版本（1.0，1.1，2.0）
  loadbalancerType: string | undefined; // 负载均衡方式（LeastConnection，RoundRobin，NoLoadBalance）
  loadbalancerKey: string | undefined; // 负载均衡关键字
  loadbalancerExpiry: number | undefined; // 负载均衡结束时间
  httphandlerAllowautoredirect: boolean | undefined; // 允许自动跳转
  httphandlerUsecookiecontainer: boolean | undefined; // 使用Cookie容器
  httphandlerUsetracing: boolean | undefined; // 使用链路追踪
  httphandlerUseproxy: boolean | undefined; // 使用代理
  httphandlerMaxconnectionsperserver: number | undefined;
  qosEnabled: boolean | undefined; // 流量调控开启
  qosExceptionsallowedbeforebreaking: number | undefined; // 打开断路器之前允许的例外数量
  qosDurationofbreak: number | undefined; // 断路器复位之前打开的时间（ms）
  qosTimeoutvalue: number | undefined; // 请求超时时间（ms）
  ratelimitQuotaexceededmessage: string | undefined; // 超过限制提示语
  ratelimitRatelimitcounterprefix: string | undefined; // 计数前缀
  ratelimitDisableratelimitheaders: boolean | undefined; // 包含X-Rate-Limit和Rety-After
  ratelimitHttpstatuscode: number | undefined; // 超过限制Http状态码
  ratelimitClientidheader: string | undefined; // 客户Header
  servicediscoveryScheme: string | undefined; // Http协议（http,https）
  servicediscoveryHost: string | undefined;
  servicediscoveryPort: number | undefined;
  servicediscoveryType: string | undefined;
  servicediscoveryToken: string | undefined;
  servicediscoveryConfigurationkey: string | undefined;
  servicediscoveryPollinginterval: number | undefined;
  servicediscoveryNamespace: string | undefined;
  serviceDiscoveryEnabled: boolean | undefined; // 服务发现开启
  enabled: boolean; // 配置启动
}
// 新增全局配置
export function insertGlobalConfiguration(data: GlobalConfigurationModel) {
  return axios.post<number>(
    '/api/global-configuration/global-configuration',
    data
  );
}

// 编辑全局配置
export function updateGlobalConfiguration(data: GlobalConfigurationModel) {
  return axios.put<string>(
    '/api/global-configuration/global-configuration',
    data
  );
}

// 查询全局配置信息
export function getGlobalConfiguration() {
  return axios.get<GlobalConfigurationModel>(
    '/api/global-configuration/global-configuration'
  );
}
